package dao;

import domain.Emp;
import utils.JdbcUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class EmpDaoImp implements EmpDao {
    /*
    * 查询员工总的记录数
    * */
    public int selCount() {
        Connection conn=null;
        PreparedStatement sta=null;
        ResultSet rs=null;
        //获取到的数量
        int count=0;
        try {
            conn= JdbcUtils.getConnection();
            String sql="select count(*) from t_emp";
            //获取预编译对象
            sta=conn.prepareStatement(sql);
            //执行sql语句得到结果集
            rs=sta.executeQuery();
            if(rs.next()){
                count = rs.getInt(1);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JdbcUtils.close(conn,sta,rs);
        }
        return count;
    }
    //查询每页的数据
    public List<Emp> selPage(int pageCode, int pageSize) {
        Connection conn=null;
        PreparedStatement sta=null;
        ResultSet rs=null;
        List<Emp> list=new ArrayList<>();
        try {
            conn=JdbcUtils.getConnection();
            //编写sql语句  员工信息按照 edate 升序排列 (desc是降序)    第一个?代表要查询的开始的索引 第二个代表要查询每页的条数
            String sql="select * from t_emp order by edate asc  limit ?,?";
            sta=conn.prepareStatement(sql);
            //设置值
            sta.setInt(1,(pageCode-1)*pageSize);
            sta.setInt(2,pageSize);
            rs=sta.executeQuery();
            while (rs.next()){
                //创建员工的对象封装数据
                Emp emp=new Emp();
                emp.setId(rs.getInt("id"));
                emp.setEname(rs.getString("ename"));
                emp.setAge(rs.getInt("age"));
                emp.setSex(rs.getString("sex"));
                emp.setSal(rs.getDouble("sal"));
                emp.setBirthday(rs.getString("birthday"));
                emp.setEdate(rs.getString("edate"));
                //存入到list中
                list.add(emp);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
              JdbcUtils.close(conn,sta,rs);
        }
        return list;
    }
}
